package com.zlm.Collection.List;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

/**
 * @author 13026
 */
public class List_interface_demo {
    /*
     * List 继承 Collection
     * List 有索引
     *
     * void add(int index,E element) 指定位置插入元素
     * E remove(int index)           指定位置移除元素
     * E set(int index,E element)    指定位置修改元素
     * E get(int index)              指定位置获取元素
     * static <E> List<E> of()       创建不可变集合
     * */
    public static void main(String[] args) {
        List<Integer> li = new ArrayList<>();
        li.add(1);
        li.add(2);

        li.add(1, 3);

        System.out.println(li);
        // 方法出现重载，优先调用实际参数与实参类型一致的方法
        li.remove(1);
        System.out.println(li);

        Integer i = 1;
        li.remove(i);
        System.out.println(li);

        /*
         * 通用三种遍历
         *  1.迭代器遍历--遍历过程需要删除元素
         *  2.增强for遍历
         *  3.Lambda遍历
         *
         * 额外两种遍历
         *  4.普通for遍历，因为有索引
         *  5.列表迭代器遍历--遍历过程需要添加元素
         * */

        // 列表迭代器遍历
        // 额外添加了一个方法，再遍历过程中，可以添加元素 it.add
        ListIterator<Integer> it = li.listIterator();
        while(it.hasNext()){
            Integer i2 = it.next();
            System.out.println(i2);
            li.add(2);
        }

        // 用List.of创建不可变集合
        List<Integer> integersList = List.of(1, 2, 2, 3, 4, 5);
    }
}
